/*
 * CtrlPrincipal.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cci;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import srac.controleatividades.cdp.Aluno;
import srac.controleatividades.cdp.Funcionario;
import srac.controleatividades.cdp.Usuario;
import srac.controleatividades.cgt.AplPrincipal;

public class CtrlPrincipal {

    AplPrincipal apl = AplPrincipal.getInstance();

    private static CtrlPrincipal instance = null;

    public static CtrlPrincipal getInstance() {
        if (instance == null) {
            instance = new CtrlPrincipal();
        }
        return instance;
    }
    

    public Component abrirPaginaPrincipal() {
        return Executions.createComponents("/PagPrincipal.zul", null, null);
    }
    
    
    public void abrirAbout() {
        Executions.createComponents("/PagInformacaoSobre.zul", null, null);
    }
    /**
     * Valida o login e senha do usuário
     * @param login
     * @param senha
     * @return O usuário com o mesmo login e senha
     */

    public Usuario login(String login, String senha) {
        try {
            return apl.login(login, senha);
        } 
        catch (Exception ex) {
            System.err.println("Erro em validar o Login");
            return null;
        }
    }
    
    
    public Component abrirEventosEvento() {
        return Executions.createComponents("/PagEventosEventos.zul", null, null);
    } 
    
    public Component abrirEventosConfirmarPresenca() {
        return Executions.createComponents("/PagEventosConfirmarPresenca.zul", null, null);
    } 
    
    public Component abrirEventosCategoria() {
        return Executions.createComponents("/PagEventosCategoria.zul", null, null);
    }
    
    public Component abrirEventosTipoAtividade() {
        return Executions.createComponents("/PagEventosTipoAtividade.zul", null, null);
    }
    
    public Component abrirEventosEtapa() {
        return Executions.createComponents("/PagEventosEtapa.zul", null, null);
    }
    
    public Component abrirEventosAtividadeComplementar() {
        return Executions.createComponents("/PagEventosAtividade.zul", null, null);
    }
    
    public Component abrirEventosInscricao(){
        return Executions.createComponents("/PagEventosInscricao.zul", null, null);
    }
    
    public Component abrirEventosRegistroAC() {
        return Executions.createComponents("/PagEventosValidar.zul", null, null);
    }
    
    public Component abrirRegistroConferencia(){
        return Executions.createComponents("/PagEventosConferencia.zul", null, null);
    }
    
    public Component abrirEventosFuncionario(){
        return Executions.createComponents("/PagEventosFuncionario.zul", null, null);
    }
    
    public Component abrirEventosAluno(){
        return Executions.createComponents("/PagEventosAluno.zul", null, null);
    }
    
    /**
     * Obtem o aluno pelo Usuario
     * @param u
     * @return O Aluno
     */
	
    public Aluno obterAluno(Usuario u){
        return apl.obterAluno(u);
    }
    
    /**
     * Obtem o Funcionário pelo Usuario
     * @param u
     * @return O Funcionário
     */
    
    public Funcionario obterFuncionario(Usuario u){
        return apl.obterFuncionario(u);
    }
    
    /**
     * Abre a PagAlterarSenha para o Usuário poder alterar a senha atual
     * @param user 
     */

    public void abrirAlterarSenha(Usuario user) {
        Map map = new HashMap();
        map.put("obj", user);
        Executions.createComponents("/PagAlterarSenha.zul", null, map);
    }

    /**
     * Modifica a senha do usuário
     * @param list
     * @return 0 caso a senha antiga, a senha nova e a confirmação estejam corretas, 1 caso a confirmação esteja incorreta e 
     * 2 caso a senha antiga esteja incorreta
     */
    public int verificarSenha(ArrayList<Object> list) {
        try {
            return apl.verificarSenha(list);
        } catch (Exception ex) {
            System.err.println(ex.getMessage());
            return 3;
        }
        
    }

    public Component abrirRelatorioFinal() {
        return Executions.createComponents("/PagRelatorioFinal.zul", null, null);
    }

    public void abrirPaginaCadastro() {
        
    }



    
}
